package com.lapelife.backend.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lapelife.backend.common.ResponseResult;
import com.lapelife.backend.model.request.AuthenticateRequest;
import com.lapelife.backend.model.request.MenuRequest;
import com.lapelife.backend.model.request.RoleRequest;
import com.lapelife.backend.model.view.MenuView;
import com.lapelife.backend.model.view.RoleView;

import java.util.List;

public interface AuthenticateService {
    /**
     * 为用户添加角色
     * @param authenticateRequest 角色信息
     * @return 成功或失败反馈
     */
    ResponseResult<String> addRoleToUser(AuthenticateRequest authenticateRequest);

    /**
     * 添加角色
     * @param roleRequest 角色信息
     * @return
     */
    ResponseResult<String> addRole(RoleRequest roleRequest);

    /**
     * 删除角色
     * @param roleRequest 角色信息
     * @return
     */
    ResponseResult<String> removeRole(RoleRequest roleRequest);

    /**
     * 修改角色信息
     * @param roleRequest 角色信息
     * @return
     */
    ResponseResult<String> updateRole(RoleRequest roleRequest);

    /**
     * 获取角色列表，若参数均为空则获取所有角色
     * @param roleRequest 角色参数信息
     * @return 角色视图列表
     */
    ResponseResult<Page<RoleView>> getRole(RoleRequest roleRequest);

    /**
     * 获取权限列表，若参数均为空则获取所有权限
     * @param menuRequest 权限参数信息
     * @return 权限视图列表
     */
    ResponseResult<Page<MenuView>> getMenu(MenuRequest menuRequest);

    /**
     * 为角色添加权限
     * @param authenticateRequest 权限id列表与角色id
     * @return
     */
    ResponseResult<String> addMenuToRole(AuthenticateRequest authenticateRequest);


    ResponseResult<String> deleteRoleById(Long id);

    ResponseResult<String> deleteRoleFor(AuthenticateRequest authenticateRequest);

    ResponseResult<String> deleteMenuFor(AuthenticateRequest authenticateRequest);
}
